"""
闭包：
概念：在函数体中定义内部函数，并且使用了外部函数的变量，然后把内部函数给返回
那么这个内部函数就是闭包

优点：避免污染全局环境，这样在函数体外可以使用函数体中的变量

缺点：数据长期驻留在内存中，造成内存极大的浪费

"""
a = 10
def func1():
    b = 20
    #func2是一个闭包
    def func2(x):
        nonlocal b
        b = x
        c = 30
        return b
    return func2
f2 = func1()
print(f2(1))



def func3():
    b = 40
    #func4是一个闭包
    def func4():
        return b
    return func4
f3 = func3()
print(f3())
